package es.deusto.herotactics.utils;

import java.net.URL;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.view.View;
import android.widget.ImageView;

/**
 * Clase con métodos para gestionar mejor el pintado en un surfaceView
 * 
 * @author ibai
 *
 */
public class SurfaceTweaks {
	
	/**
	 * "Workaround" para poder redimensionar un bitmap 
	 * 
	 * @param context El Context desde el que se está llamando
	 * @param bitmap Bitmap a redimensionar
	 * @param height Nueva altura del Bitmap
	 * @param width Nueva anchura del Bitmap
	 * @param scaleType Modo de escalado del bitmap
	 */
//	public static Bitmap resizeBitmap(Context context, Bitmap bitmap, int height, int width,
//			ScaleType scaleType) {
//		ImageView imageView = bitmapToImageView(context, bitmap);
//		imageView.setScaleType(scaleType);
//		LinearLayout ll = new LinearLayout(context);
//		ll.addView(imageView, width, height);
//		return viewToBitmap(ll);
//	}
	public static Bitmap resizeBitmap(Bitmap bm, int newHeight, int newWidth) {

		int width = bm.getWidth();

		int height = bm.getHeight();

		float scaleWidth = ((float) newWidth) / width;

		float scaleHeight = ((float) newHeight) / height;

		// create a matrix for the manipulation

		Matrix matrix = new Matrix();

		// resize the bit map

		matrix.postScale(scaleWidth, scaleHeight);

		// recreate the new Bitmap

		Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);

		return resizedBitmap;

		}
	
	/**
	 * Convierte un Bitmap en un ImageView
	 * 
	 * @param origen Desde donde se llama
	 * @param bitmap Bitmap desde el que se va a sacar el ImageView
	 * @return ImageView del bitmap
	 */
	public static ImageView bitmapToImageView(Context context, Bitmap bitmap) {
		ImageView imageView = new ImageView(context);
		imageView.setImageBitmap(bitmap);
		return imageView;
	}
	
	/**
	 * Convierte un View en un Bitmap
	 * 
	 * @param view View a convertir
	 * @return Bitmap generado a partir del View
	 */
	public static Bitmap viewToBitmap(View view) {
		view.buildDrawingCache();
		Bitmap bitmap = view.getDrawingCache();
		return bitmap;
	}
	
	/**
	 * Genera un Bitmap a partir de un archivo de imagen al que apunta la URL
	 * 
	 * @param url Ruta al archivo
	 * @return bitmap generado a partir de la imagen
	 */
	public static Bitmap getBitmap(URL url) {
		return BitmapFactory.decodeFile(url.getFile());
	}
//	public static Bitmap getBitmap(MapaAndroid origen, URL url) {
//		MediaStore.Images.Media.getBitmap(origen.getContext().getContentResolver(),
//				Uri.Builder);
//		return null;
//	}
	
//	public static Bitmap getBitmap(URL url) {
//	    Bitmap bm = null;
//	    InputStream is = null;
//	    BufferedInputStream bis = null;
//	    try {
//	        URLConnection conn = url.openConnection();
//	        conn.connect();
//	        is = conn.getInputStream();
//	        bis = new BufferedInputStream(is, 8192);
//	        bm = BitmapFactory.decodeStream(bis);
//	    } catch (Exception e) {
//	        e.printStackTrace();
//	    }
//	    finally {
//	        if (bis != null) {
//	            try {
//	                bis.close();
//	            } catch (IOException e) {
//	                e.printStackTrace();
//	            }
//	        }
//	        if (is != null) {
//	            try {
//	                is.close();
//	            } catch (IOException e) {
//	                e.printStackTrace();
//	            }
//	        }
//	    }
//	    return bm;
//	}
}
